/**
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 03/08/2013
 *
 */
package br.com.vfcfw.test.functional.exemplo;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import br.com.vfcfw.test.BaseTesteFuncional;
import br.com.vfcfw.test.functional.BasePagina;


/**
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 03/08/2013
 * 
 */
public class DeliciousManager extends BasePagina {

    /**
     * Construtor da classe.
     */
    public DeliciousManager() {

        super(BaseTesteFuncional.obterDriverAtual());
    }

    /**
     * Construtor da classe.
     * 
     * @param driver
     */
    public DeliciousManager(WebDriver driver) {

        super(driver);
    }

    @FindBy(css = "a.nav-link.add-link.hidden-phone")
    WebElement addLinkButton;

    @FindBy(name = "new-url")
    WebElement urlInput;

    @FindBy(css = "button.btn")
    WebElement buttonSave;

    @FindBy(css = "html body#user_profile.fullpage div#modal div.modal div.m_titlebar h4")
    WebElement labelCreatingLink;

    @FindBy(css = "html body#user_profile.fullpage div#main div.content div.leftColumn div.linkList div.link div.body a.title")
    WebElement labelNewLink;

    @FindBy(css = "div.controls > input[type='checkbox']")
    WebElement checkLink;

    @FindBy(xpath = "/html/body/div[2]/div/div/div[3]/div[2]/a[5]")
    WebElement deleteLink;

    @FindBy(xpath = "/html/body/div[4]/div[2]/div[3]/a[2]")
    WebElement deleteConfirmationLink;

    /**
     * Adiciona um link ao delicious.
     * 
     * @return <tt>TRUE</tt> Link adicionado com sucesso, <tt>FALSE</tt> caso contrário.
     */
    public Boolean adicionarLink() {

        comandos.clicar(addLinkButton);
        comandos.definirValor(urlInput, "www.google.com.br");
        comandos.clicar(buttonSave);
        comandos.esperarPorSegundos(1);
        comandos.clicar(buttonSave);
        comandos.esperarPorSegundos(1);
        comandos.esperarElementoVisivel(labelNewLink);
        return comandos.isElementoContemTexto(labelNewLink, "Google");
    }

    /**
     * Remove um link do delicious.
     * 
     * @return <tt>TRUE</tt> Link removido com sucesso, <tt>FALSE</tt> caso contrário.
     */
    public Boolean removerLink() {

        comandos.esperarElementoVisivel(checkLink);
        comandos.marcar(checkLink);
        comandos.clicar(deleteLink);
        comandos.clicar(deleteConfirmationLink);
        return comandos.isElementoPresente(labelNewLink);
    }

}
